var basePathJs = "";
var upLoader;
var imgCount=6;
var $ = jQuery,
    supportTransition = (function () {
        var s = document.createElement('p').style,
            r = 'transition' in s ||
                'WebkitTransition' in s ||
                'MozTransition' in s ||
                'msTransition' in s ||
                'OTransition' in s;
        s = null;
        return r;
    })(),
// 优化retina, 在retina下这个值是2
    ratio = window.devicePixelRatio || 1,
// 缩略图大小
    thumbnailWidth = 100 * ratio,
    thumbnailHeight = 100 * ratio;
var submitType = 0;//1 提交并新增 2提交返回列表
function projectUpLoader(url) {
    if(url==undefined){
        url="";
    }else{
        url+"/ajax/uploadfile/uploadimg?filedir=ck"
    }
    var $ = jQuery,
        $list = $('.filelist'),
        // Web Uploader实例

        // 初始化Web Uploader
        upLoader = new WebUploader.Uploader({
            // 自动上传。
            auto: false,
            //拖拽图片上传
            dnd: '.dndArea',
            // swf文件路径
            swf: 'Uploader.swf',
            // 文件接收服务端。
            server: url,
            // 选择文件的按钮。可选。
            // 内部根据当前运行是创建，可能是input元素，也可能是flash.
            pick: {
                id: '#filePicker',
                multiple: true,//去掉上传时可以选择多个文件
                label: '点击选择图片'
            },
            fileNumLimit: 6,
            // 只允许选择文件，可选。
            accept: {
                title: 'Images',
                extensions: 'gif,jpg,jpeg,bmp,png',
                mimeTypes: 'image/gif,image/jpg,image/jpeg,image/bmp,image/png'
            },
            //总文件数量
            fileNumLimit: 6,
            //总文件大小
            fileSizeLimit: 30 * 1024 * 1024,
            //单个文件大小
            fileSingleSizeLimit: 5 * 1024 * 1024
        });

    // 当有文件添加进来的时候
    upLoader.on('fileQueued', function (file) {
        addFile($list, file, upLoader);
        /*图片添加近来的时候显示商品主图*/
        $('.mainImgText').show();
        /*图片等于五张的时候隐藏上传按钮*/
        if ($('.fileImgList').length >= imgCount) {
            $('#filePicker').hide();
        }
        upLoader.upload();
    });
    //当文件被移除队列后触发。
    upLoader.on('fileDequeued', function (file) {
        removeFile(file);
        /*图片小于五张的时候显示图片*/
        if ($('.fileImgList').length < imgCount) {
            $('#filePicker').show();
        }
        if ($('.fileImgList').length < 1) {
            $('.mainImgText').hide();
        }
    });
    // 文件上传过程中创建进度条实时显示。
    upLoader.on('uploadProgress', function (file, percentage) {
        progressFn(file, percentage)
    });
    // 文件上传成功，给item添加成功class, 用样式标记上传成功。
    upLoader.on('uploadSuccess', function (file, response) {

        if (response.code != 1) {
            var $imguploadErrorSrc = staticdomain + '/base/lib/webuploader/upload/uploadErrorImg.png';
            errorText(file, response);
            $('#' + file.id).find('.imgWrap img').attr('src', $imguploadErrorSrc);
        } else {
            var data = response.data;
            $("#" + file.id + "").attr("data-url", data);
            $('#' + file.id).addClass('upload-state-done');
            //$( '#'+file.id).find('.imgWrap img').attr('src',imgUrlJs + "/" + data.sourceUrl);
            $('#' + file.id).find('.imgWrap img').attr('src', data + "_388x388");
            console.log(response)
        }
    });
    // 文件上传失败，现实上传出错。
    upLoader.on('uploadError', function (file, reason) {
        var $imguploadErrorSrc = '/base/lib/webuploader/upload/uploadErrorImg.png';
        errorText(file, reason);
        $('#' + file.id).find('.imgWrap img').attr('src', $imguploadErrorSrc);
        console.log(reason)
    });
    upLoader.on('error', function (type) {
        errorType(type)
    });
    // 完成上传完了，成功或者失败，先删除进度条。
    upLoader.on('uploadComplete', function (file) {
        $('#' + file.id).find('.progress').remove();
    });

    /*初始化*/
    upLoader.on('ready', function () {
        window.upLoader = upLoader;
        for (var i = 0; i < file_images.length; i++) {
            var obj = {}, statusMap = {};
            obj.id = file_images[i].id;
            obj.ret = file_images[i].url;
            obj.version = WebUploader.Base.version;
            obj.getStatus = function () {
                return '';
            }
            $('.mainImgText').show();
            obj.setStatus = function (status, text) {

                var prevStatus = statusMap[this.id];

                typeof text !== 'undefined' && (this.statusText = text);

                if (status !== prevStatus) {
                    statusMap[this.id] = status;
                    /**
                     * 文件状态变化
                     * @event statuschange
                     */
                    upLoader.trigger('statuschange', status, prevStatus);
                }

            };
            editFile($list, obj, upLoader);
            $("#" + obj.id + "").attr("data-url", file_images[i].sourceUrl);
        }

    });
}

function filePanel($li, $btns, file, supportTransition, uploader) {
    $li.on('mouseenter', function () {
        $btns.stop().animate({height: 30});
    });
    $li.on('mouseleave', function () {
        $btns.stop().animate({height: 0});
    });
    $btns.on('click', 'span', function () {
        var index = $(this).index(),
            deg;
        switch (index) {
            case 0:
                uploader.removeFile(file);
                return;
        }
        if (supportTransition) {
            deg = 'rotate(' + file.rotation + 'deg)';
            $li.find('p.imgWrap').css({
                '-webkit-transform': deg,
                '-mos-transform': deg,
                '-o-transform': deg,
                'transform': deg
            });
        } else {
            $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');
        }

    });
}

function removeFile(file) {
    var $li = $('#' + file.id);
    $li.off().find('.file-panel').off().end().remove();
}

function errorText(file, reason) {
    var $li = $('#' + file.id),
        $error = $li.find('p.error');
    // 避免重复创建
    if (!$error.length) {
        $error = $('<p class="error"></p>').appendTo($li);
    }
    $error.text('上传失败');
}

function errorType(type) {
    switch (type) {
        case 'F_EXCEED_SIZE':
            alert('单个文件大小超出限制')
            break;
        case 'Q_EXCEED_SIZE_LIMIT':
            alert('总文件大小超出限制')
            break;
        case 'Q_EXCEED_NUM_LIMIT':
            alert('文件数量超出限制')
            break;
        case 'Q_TYPE_DENIED':
            alert('文件不符合类型')
            break;
    }
}

function progressFn(file, percentage) {
    var $li = $('#' + file.id),
        $percent = $li.find('.progress span');
    // 避免重复创建
    if (!$percent.length) {
        $percent = $('<p class="progress"><span></span></p>')
            .appendTo($li)
            .find('span');
    }
    $percent.css('width', percentage * 100 + '%');
}

function addFile($list, file, uploader) {
    var $imguploadProgressSrc = '/base/lib/webuploader/upload/uploadProgressImg.png';
    var $li = $('<li id="' + file.id + '" class="fileImgList">' +
        '<p class="imgWrap"><img></p>' +
        '<p class="progress"><span></span></p>' +
        '</li>'),
        $btns = $('<div class="file-panel">' +
            '<span class="cancel">删除</span>').appendTo($li),
        $img = $li.find('img');
    $img.attr('src', $imguploadProgressSrc);
    $list.append($li);
    // 创建缩略图
    console.log(file);
    file.rotation = 0;
    filePanel($li, $btns, file, supportTransition, uploader);
}

function editFile($list, file, uploader) {
    var $li = $('<li id="' + file.id + '" class="fileImgList">' +
        '<p class="imgWrap"><img></p>' +
        '<p class="progress"><span></span></p>' +
        '</li>'),
        $btns = $('<div class="file-panel">' +
            '<span class="cancel">删除</span>').appendTo($li),
        $img = $li.find('img');
    $img.attr('src', file.ret);
    $list.append($li);
    // 创建缩略图
    console.log(file);

    file.rotation = 0;
    filePanel($li, $btns, file, supportTransition, uploader);
    if ($('.fileImgList').length >= imgCount) {
        $('#filePicker').hide();
    }
}